The present invention relates to improving the efficiency of a data-storage management system configured to allocate storage capacity by means of a thin-provisioning methodology.
Thin provisioning is a flexible method of space-efficiently allocating virtual storage to multiple users from one or more shared pools of physical computer-readable storage devices, such as a bank of rotating-media hard drives or an array of solid-state disks. Thin provisioning uses virtualization technology to provision virtual storage volumes that, in aggregate, may appear to offer greater total storage capacity than that of the physical pool.
A thin-provisioned storage device, such as a virtual disk drive, is thus associated with both a virtual storage capacity and a physical (or real) storage capacity. The device's virtual capacity is the capacity that is visible to a user or host, and the device's real capacity is the physical storage capacity that is actually allocated and available to the device.
In one example, a pool of physical hard drives may have a total aggregate physical storage capacity of 1,000 TB. A thin-provisioning storage-management utility or a thin-provisioning component of a storage-management system might provision a 3 TB virtual volume for each of 1,000 users, supporting each 3 TB virtual volume with ITB of physical storage. Although the users perceive a total of 3,000 TB of virtual storage, only 1,000 TB of physical storage is actually available.
This thin-provisioning strategy works because the thin-provisioning system has estimated that each user, on average, is likely to consume less than 1 TB of physical storage. If one user does at some point require more than 1 TB of real storage space, the thin-provisioning mechanism must transfer additional physical storage capacity to that user from a second user who needs less than 1 TB of physical storage.
It is thus important for thin-provisioned storage devices to configure enough real capacity to ensure that users do not run out of physical storage, but not configure so much that a large amount of excess physical capacity is wasted. A failure to meet both these criteria can reduce the efficiency of a storage-management system by either increasing the frequency of reprovisioning tasks or by wasting valuable physical storage capacity.
Load-balancing is another function performed by virtualized-storage management systems. This task requires the storage management system to direct workloads (which may be measured as input/output operations per second or IOPS) to storage devices in a balanced manner. For example, a load-balancing component of a storage-management system might try to avoid overloading a first hard drive with a transaction-processing system's high volume of read/write operations by instead directing those operations (and the data upon which the operations are performed) to a second drive that has a lighter workload.
In a thin-provisioning system, load-balancing tasks are generally considered to be unrelated to storage-allocation, but the two functions are not completely independent. In one example, additional physical storage may be allocated to a virtual drive in order to allow the virtual drive to store data required by a new application. If the newly stored data is subject to a high volume of transactions, the physical storage unit from which the additional physical storage was allocated will experience a workload increase indirectly related to the provision of new storage on the virtual device.
A problem that is thus unique to storage-management systems, and is particularly relevant to thin-provisioning storage-management systems, is that dynamic storage-allocation and load-balancing functions are today performed independently, generally by two different components of the storage-management system. This results in less accurate and less efficient storage allocation. There is therefore a need for a way to integrate storage allocation and load-balancing functions into a single operation, such that that the storage-management system may perform allocation and balancing tasks more efficiently and accurately.